Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-92678: Fix tp_dictoffset inheritance. #95596

Merged
merged 6 commits into from
Aug 3, 2022

Conversation

markshannon
Copy link
Member

@markshannon markshannon commented Aug 3, 2022

Restores the 3.10 behavior for inheriting tp_dictoffset involving multiple inheritance of C extension classes.

Copy link
Member

@encukou encukou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't check there aren't more edge cases, but this is an improvement, and should address the pybind11 issue.

@markshannon
Copy link
Member Author

I can't check there aren't more edge cases

Any ideas? I'd be very happy to add more tests

Copy link
Member

@ericsnowcurrently ericsnowcurrently left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mostly LGTM

The new test seems fine, but I didn't look at it thoroughly. I left one comment (about a second case for weaklistoffset) that should definitely be address one way or another.

Objects/typeobject.c Outdated Show resolved Hide resolved
Objects/typeobject.c Show resolved Hide resolved
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
@markshannon markshannon added the needs backport to 3.11 only security fixes label Aug 3, 2022
@markshannon markshannon merged commit 906e450 into python:main Aug 3, 2022
@miss-islington
Copy link
Contributor

Thanks @markshannon for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

@miss-islington
Copy link
Contributor

Sorry, @markshannon, I could not cleanly backport this to 3.11 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker 906e4509328917fe9951f85457897f6a841e0529 3.11

markshannon added a commit to faster-cpython/cpython that referenced this pull request Aug 3, 2022
* Add test for inheriting explicit __dict__ and weakref.

* Restore 3.10 behavior for multiple inheritance of C extension classes that store their dictionary at the end of the struct.
@vstinner
Copy link
Member

vstinner commented Aug 3, 2022

I cannot review the implementation, but thanks for adding tests! #92678 looked complicated and serious. Thanks for fixing it ;-)

markshannon added a commit that referenced this pull request Aug 4, 2022
* Add test for inheriting explicit __dict__ and weakref.

* Restore 3.10 behavior for multiple inheritance of C extension classes that store their dictionary at the end of the struct.
@markshannon markshannon deleted the fix-dictoffset-inheritance branch September 26, 2023 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs backport to 3.11 only security fixes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants